/*
g++ -o demo sdlwindow_test.cpp -lSDL2
https://blog.csdn.net/n3verl4nd/article/details/84813262
*/


//初始化SDL2和创建一个窗口，并且将屏幕绘制成大红色
#include <iostream>
extern "C"
{
#include <SDL2/SDL.h>
}
 
int main(int argc, char* argv[])
{
    //窗口
    SDL_Window *windowScreen = NULL;
    //窗口表面
    SDL_Surface *windowSurface = NULL;
    
    //初始化SDL2
    if (SDL_Init(SDL_INIT_VIDEO) == -1)
    {
        std::cout << SDL_GetError() << std::endl;
        return -1;
    }
 
    /* 创建窗口
    *第一个参数是窗口的标题
    *第二、三个参数指明了窗口的位置信息
    *第四、五个参数是窗口的大小（长、宽）
    *第六个参数是窗口的状态
    *SDL_WINDOW_SHOWN--显示窗口
    *SDL_WINDOW_BORDERLESS--显示无边框窗口
    */
    windowScreen = SDL_CreateWindow("title", SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED, 240, 400, SDL_WINDOW_SHOWN | SDL_WINDOW_BORDERLESS);
    if (!windowScreen)
    {
        std::cout << SDL_GetError() << std::endl;
        return -1;
    }
 
    // 获取窗口的表面
    windowSurface = SDL_GetWindowSurface(windowScreen);
    if (!windowSurface)
    {
        std::cout << SDL_GetError() << std::endl;
        return -1;
    }
 
    /*填充窗口
    *第一个参数是填充的目标表面
    *第二个是填充的矩形区域(NULL则表示默认全部填充)
    *第三个参数是填充矩形用的颜色
    */
    SDL_FillRect(windowSurface, NULL, SDL_MapRGB(windowSurface->format, 0xFF, 0x00, 0x00));
 
    //将窗口表面加载到窗口
    SDL_UpdateWindowSurface(windowScreen);
    //暂停窗口
    SDL_Delay(2000);
    
    
    SDL_FreeSurface(windowSurface);
    SDL_DestroyWindow(windowScreen);
    SDL_Quit();
    return 0;
}
 
 
/*配置
1.VC++目录 include lib dll
2.链接器->输入->附加依赖项 SDL2.lib SDL2main.lib
3.链接器->系统->子系统  窗口 (/SUBSYSTEM:WINDOWS)  控制台 (/SUBSYSTEM:CONSOLE)
4.C++->代码生成->运行库 /MD
编译
cl /MD /c c.cpp
链接
link /SUBSYSTEM:CONSOLE c.obj SDL2.lib SDL2main.lib
*/
